From 4720717da59bf8d4ea2852bf7b7caa99959f554d Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Mon, 9 Mar 2009 13:50:45 +0000 Subject: [PATCH] hvm/vpt: Check that an irq is not blocked before waking the vcpu Currently, when a timer fires for a vpt interrupt, the interrupt handler calls vcpu_kick() without checking to see if the IRQ is blocked. This causes the vcpu to wake up out of a halt when it shouldn't. Signed-off-by: George Dunlap --- xen/arch/x86/hvm/vpt.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/hvm/vpt.c b/xen/arch/x86/hvm/vpt.c index fe4ec99129..929d4cf57d 100644 --- a/xen/arch/x86/hvm/vpt.c +++ b/xen/arch/x86/hvm/vpt.c @@ -209,7 +209,8 @@ static void pt_timer_fn(void *data) set_timer(&pt->timer, pt->scheduled); } - vcpu_kick(pt->vcpu); + if ( !pt_irq_masked(pt) ) + vcpu_kick(pt->vcpu); pt_unlock(pt); } -- 2.30.2